import java.util.Date;
import java.util.Calendar;
/**
 * Stelt een Freepodiumact voor
 * 
 * @author Eric de Potter
 * @version 1.0
 */
public class FreePodium extends Optreden
{
    public final static int LENGTH = 20;
    private final String genre = "Free podium";
    
    /**
     * Maakt een freepodium zonder beschrijving
     */
    public FreePodium(String title, String startTime, String stage)
    {
        super(App.convertToDate(startTime), "", stage, title);
    }
    
    /**
     * Maakt een freepodium met beschrijving
     */
    public FreePodium(String title, String startTime, String stage, String description)
    {
        super(App.convertToDate(startTime), description, stage, title);
    }
    
    /**
     * @return het genre van het optreden
     */
    public String getGenre()
    {
        return genre;
    }
    
    /**
     * @return   de stoptijd van het optreden.
     */
    public Date getStopDate()
    {
        return calculateStopDate(super.getStartDate());
    }   
    
    /**
     * Berekent de stoptijd met de starttijd en de lengte van het freepodium
     * 
     * @param  startDate  de startdatum
     * @return   de stoptijd van het freepodium
     */
    private Date calculateStopDate(Date startDate)
    {
        Date stopDate = startDate;
        Calendar stopCal = Calendar.getInstance();
        stopCal.setTime(stopDate);
        int minutes = 0;
        minutes += FreePodium.LENGTH;
        stopCal.add(Calendar.MINUTE,minutes);
        return stopCal.getTime();
    }
    
    /**
     * @return een volledige beschrijving van het Freepodium
     */
    public String toString()
    {
        Date starttijd = getStartDate();
        Date stoptijd = getStopDate();
        String returnString = genre + ": " + getTitle() + "\n";
           returnString += "Stage: " + getStage() + "\n";
           returnString += "Tijd: " + toDouble(starttijd.getHours()) + "u" + toDouble(starttijd.getMinutes());
           returnString += " - " + toDouble(stoptijd.getHours()) + "u" + toDouble(stoptijd.getMinutes()) + "\n";
           returnString += "Duur: " + LENGTH + " min" + "\n";
        if (getDescription().trim().length() == 0)
            returnString += "Geen beschrijving" + "\n";
        else
            returnString += getDescription() + "\n";
        return returnString;
    }

}
